﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TeaClass
{
    class Program
    {
        static void Main(string[] args)
        {
            //        Определить класс с именем Tea содержащую следующие поля: страна производитель; сорт чая; 
            //вес в упаковке; цена чая за 100 гр.
            //Реализовать следующий функционал
            //1) ввод данных в массив из n элементов в типа Tea; 
            //2) Отобразить информацию о чаях из списка    
            //3) вывод информации об объекте, страна производитель которого введена пользователем.
            //4) Пользователь выбирает чай, указывает количество чая которое хочет купить.Вывести стоимость покупки


            List<Tea> allTeas = new List<Tea>();

            string listAddChoice = "n";

            do
            {
                Console.Clear();
                Tea newTea = new Tea();
                newTea.AddNewTea();
                allTeas.Add(newTea);
                Console.WriteLine("Add another tea into the list ? y/n");
                listAddChoice = Console.ReadLine().ToLower();

            } while (listAddChoice == "y");

            Console.Clear();
            PrintListOfTeas(allTeas);

            Console.WriteLine("Press any key to continue .\t.\t.");
            Console.ReadKey();


            string userMenuChoice = "n";
            do
            {
                Console.Clear();
                Console.Write("Choose the task 1/2/3/4\n" +
                    "1 - Layout of list\n" +
                    "2 - Select by Country of production\n" +
                    "3 - Select tea - specify quantity - Layout of total price\n" +
                    "4 - Add some more tea to list\n");
                string choiceTask = Console.ReadLine();
                switch (choiceTask)
                {
                    case "1":
                        Console.WriteLine("Layout of list");
                        PrintListOfTeas(allTeas);
                        break;
                    case "2":
                        Console.WriteLine("Select by Country of production");
                        PrintSelectedByCountry(allTeas);
                        break;
                    case "3":
                        Console.WriteLine("Select tea - specify quantity - Layout of total price");
                        CountPriceForSelectedQuantAndTeaSort(allTeas);
                        break;
                    case "4":
                        Console.WriteLine("Add tea to list");
                        TeaAddToList(allTeas);
                        break;
                }
                Console.WriteLine("do another task y/n");
                userMenuChoice = Console.ReadLine().ToLower();
                Console.Clear();
            } while (userMenuChoice == "y");
        }

        //static List<Tea> TeaCreateList()
        //{
        //    List<Tea> allTeas = new List<Tea>();

        //    string listAddChoice = "n";

        //    do
        //    {
        //        Console.Clear();
        //        Tea newTea = new Tea();
        //        newTea.AddNewTea();
        //        allTeas.Add(newTea);
        //        Console.WriteLine("Add another tea into the list ? ");
        //        listAddChoice = Console.ReadLine().ToLower();

        //    } while (listAddChoice == "y");

        //    Console.Clear();
        //    PrintListOfTeas(allTeas);

        //    return allTeas;
        //}

        static List<Tea> TeaAddToList(List<Tea> allTeas)
        {
            string listAddChoice = "n";

            do
            {
                Console.Clear();
                Tea newTea = new Tea();
                newTea.AddNewTea();
                allTeas.Add(newTea);
                Console.WriteLine("Add another tea into the list y/n ? ");
                listAddChoice = Console.ReadLine().ToLower();

            } while (listAddChoice == "y");

            Console.Clear();
            PrintListOfTeas(allTeas);
            Console.WriteLine();
            Console.WriteLine("Press any key to continue .\t.\t.");
            Console.ReadKey();

            return allTeas;
        }

        static void PrintListOfTeas(List<Tea> allTeas)
        {
            Console.WriteLine("All teas available by now:\n");
            foreach (var tea in allTeas)
            {
                tea.PrintTeaInfo();
            }

        }

        static void PrintSelectedByCountry(List<Tea> allTeas)
        {
            Console.WriteLine("Choose production country to select from list");
            string userchoiceCountry = Console.ReadLine();
            foreach (var tea in allTeas)
            {
                if (tea.productionCountry == userchoiceCountry)
                {
                    tea.PrintTeaInfo();
                }
            }
        }

        static void CountPriceForSelectedQuantAndTeaSort(List<Tea> allTeas) 
        {
            double totalPrice = 0;
            Console.WriteLine("Choose tee sort");
            string userTeaSort = Console.ReadLine();
            Console.WriteLine("Choose quantity of tea");
            double userQuantity = Double.Parse(Console.ReadLine());

            foreach (var tea in allTeas)
            {
                if (tea.teaSort == userTeaSort)
                {
                    totalPrice = tea.teaPrice * userQuantity;
                }
            }
            Console.WriteLine("Price for {0} gramms of {1} sort: {2}$", userQuantity, userTeaSort, totalPrice);
        }

    }
}
